#ifndef MYFORM_H
#define MYFORM_H

#include <QWidget>
#include <QDebug>


/**
 * 对eventfilter、QEvent::FocusIn的小总结
 * 对eventfilter：对处理过滤事件的对象重载eventfilter，对需要检测事件的对象调用installeventfilter
 *              在这里，处理过滤事件的对象是MyForm，被监视的对象是MyForm中的line_<num>对象，所以需要
 *              MyForm重载eventfilter，而所有line_<num>对象都要进行installeventfilter。
 *
 * // 一个简单的eventfilter的格式
    bool MyForm::eventFilter(QObject *obj, QEvent *event)
    {
        switch (event->type()) {
        case QEvent::FocusIn:
            for(int i=1;i<=5;++i){
                QLineEdit* edit = findChild<QLineEdit*>((QString("line_%1").arg(i)));
                if(edit == obj){ // 显示当前的editLab，隐藏其他editLab
                    hideEditLab();
                    QLabel* lab = findChild<QLabel*>(QString("editLab_%1").arg(i));
                    if(lab!=nullptr){
                        lab->show();
                    }else{
                        qDebug() << QString("error editLab_%1").arg(i);
                    }
                    break;
                }
            }
            break;
        default:
            break;
        }
        return QWidget::eventFilter(obj,event);
    }
 */

namespace Ui {
class MyForm;
}

class MyForm : public QWidget
{
    Q_OBJECT

public:
    explicit MyForm(QWidget *parent = nullptr);
    ~MyForm();

    bool eventFilter(QObject *obj, QEvent *event) override;

private:
    Ui::MyForm *ui;

    void init();

    void hideEditLab();
};

#endif // MYFORM_H
